package negocio;

import java.util.ArrayList;
import java.util.List;

import dto.CargaDTO;
import dto.EnvioDTO;
import dto.RemitoDTO;
import dto.VehiculoDTO;
import entities.CargaEntity;
import entities.EnvioEntity;
import entities.ItemRemitoEntity;

public class Envio 
{
	private int id;
	private Vehiculo vehiculo;
	private List<Carga> cargas;
	private Remito remito;

	public Envio(EnvioEntity ent) 
	{
		this.id=ent.getId();
		Vehiculo v = new Vehiculo(ent.getVehiculo());
		this.vehiculo=v;
		Remito r = new Remito(ent.getRemito());
		this.remito=r;
		List<CargaEntity> cargaEntL = new ArrayList<CargaEntity>();
		for (CargaEntity cargaEnt : cargaEntL) 
		{
			Carga c = new Carga(cargaEnt);
			this.cargas.add(c);
		}
	}
	
	public Envio() 
	{
	}
	public Vehiculo getVehiculo() {
		return vehiculo;
	}
	public void setVehiculo(Vehiculo vehiculo) {
		this.vehiculo = vehiculo;
	}
	public List<Carga> getCargas() {
		return cargas;
	}
	public void setCargas(List<Carga> cargas) {
		this.cargas = cargas;
	}
	public Remito getRemito() {
		return remito;
	}
	public void setRemito(Remito remito) {
		this.remito = remito;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public EnvioEntity toEntity()
	{
		EnvioEntity ee = new EnvioEntity();
		ee.setId(this.getId());
		return ee;
	}

	public EnvioDTO toDTO() 
	{
		EnvioDTO e = new EnvioDTO();
		e.setRemito(this.remito.toDTO());
		e.setVehiculo(this.vehiculo.toDTO());
		List<CargaDTO> cargas = new ArrayList<CargaDTO>();
		for (Carga c : this.cargas) 
		{
			cargas.add(c.toDTO());
		}
		e.setCargas(cargas);
		return e;
	}

	public void setCargas(Carga carga) 
	{
		if (this.cargas==null)
		{
			this.cargas=new ArrayList<Carga>();
		}
		this.cargas.add(carga);
		ItemRemito ir = new ItemRemito();
		ir.setCarga(carga);
		ir.setCantidad(1);
		ir.setImporte(12);
		Remito r = new Remito();
		r.setItemRemito(ir);
		r.setCliente(carga.getCliente());
		r.setCondicionesEspeciales(carga.getCondiciones());
		r.setFechaEstimada(carga.getFechaEstimada());
		r.setFechaMaxima(carga.getFechaMax());
		r.setCliente(carga.getCliente());
		r.setTipo(carga.getTipo());
	}
	
	
}
